Este es nuestro informe para la presentación del día 18 de diciembre. Aquí comentaremos de que trata nuestro trabajo y las transformaciones que hemos realizado, así como, el código de estas y los diferentes paquetes utilizados.
Nuestro trabajo consiste en la manipulación de datos del INE en lo referente a nombres y apellidos en España. Para esto, descargaremos desde R los datos de frecuencia de nombres y apellidos españoles del INE y también descargaremos un excel de forma manual de la distribución geográfica provincial de nuestro nombre y primer apellido.
Vamos a cargar diferentes paquetes que iremos utilizando a lo largo del trabajo.
library(tidyverse)
library(readxl)
library(reactable)
library(ggplot2)
library(stringi)
library(ggThemeAssist)
library(plotly)
Ahora descargaremos los diferentes informes para manipularlos y los transformaremos para poder hacerlos visibles. Tendremos 2 dataframes de apellidos, uno para frecuencia >100 y otros para frecuencia <100 y >20. Así mismo, tendremos 2 dataframes de nombres, uno para hombres y otro para mujeres.
#APELLIDOS
#- descargamos los datos en "./Datos/frecuencia.xls"
url <- "https://www.ine.es/daco/daco42/nombyapel/apellidos_frecuencia.xls"
archivo_de_destino <- here::here("Datos", "frecuencia.xls")
download.file(url, archivo_de_destino)
#- Vamos a importar los datos tipo excel con la función readxl y mediante el sheet=1 cogeremos la HOJA 1 del excel y mediante el range, cogeremos desde el Orden hasta el último total, ya que, si importamos directamente el EXCEL tendriamos que eliminar algunas de las primeras filas, por lo que, mediante esto ya lo tenemos como queremos.
df_apellidos1 <- read_excel ("./Datos/frecuencia.xls", sheet=1, range="A5:E25798")
df_apellidos2 <- read_excel ("./Datos/frecuencia.xls", sheet=2, range="A5:E50393")
#NOMBRES
url2 <- "https://www.ine.es/daco/daco42/nombyapel/nombres_por_edad_media.xls"
archivo_de_destino2 <- here::here("Datos", "frecuencianombre.xls")
download.file(url2, archivo_de_destino2)
# Vamos a importar los datos tipo excel con la función readxl y mediante el sheet=1 cogeremos la HOJA 1 del excel y mediante el range, cogeremos desde el Orden hasta el último total, ya que, si importamos directamente el EXCEL tendriamos que eliminar algunas de las primeras filas, por lo que, mediante esto ya lo tenemos como queremos.
df_nombre1 <- read_excel ("./Datos/frecuencianombre.xls", sheet=1, range="A7:D25790")
df_nombre <- read_excel ("./Datos/frecuencianombre.xls", sheet=2, range="A7:D26499")
#Daniel y Laura frecuencia y provincias
df_Daniel <- read_excel ("./Datos/Daniel_Laura.xlsx", sheet=1)
df_Laura <- read_excel ("./Datos/Daniel_Laura.xlsx", sheet=2)
Si abriesemos los dataframes de apellidos, vemos que aparecen varias variables que se llaman “Total” las cuales van referidas a algo. Vamos a modificar los nombre por aquello a lo que correspondes esos “totales”.
#Modificamos los nombres de las columnas que se llaman total, por aquello a lo que le corresponde (es un total, pero un total de algo, lo llamaremos conforme ese ALGO)
df_apellidos1 <- df_apellidos1 %>% rename(Frec_1er_Apellido = Total...3,
Frec_2o_Apellido= Total...4,
Frec_Ambos_Apellidos= Total...5)
df_apellidos2 <- df_apellidos2 %>% rename(Frec_1er_Apellido = Total...3,
Frec_2o_Apellido= Total...4,
Frec_Ambos_Apellidos= Total...5)
df_apellidosmodif <- suppressWarnings(transform(df_apellidos2, Frec_2o_Apellido= as.numeric(Frec_2o_Apellido),
Frec_Ambos_Apellidos=as.numeric(Frec_Ambos_Apellidos)
)
)
Ahora, vamos a manipular nuestros dataframes para hacer ciertas construcciones, en este caso empezaremos con unas tablas. Estas, van a recoger los nombres y apellidos agrupados por la letra que empiecen y con distintos colores de celda dependiendo la frecuencia, siendo verde frecuencia alta, naranja frecuencia media y rojo frecuencia baja, es decir, poco frecuentes.
Primero de todo, necesitaremos unir ambas tablas, tanto de nombres como de apellidos en una sola.
#APELLIDOS
df_apellidos_conjuntos <- full_join(df_apellidos1, df_apellidosmodif, by= c("Orden","Apellido","Frec_1er_Apellido","Frec_2o_Apellido","Frec_Ambos_Apellidos"))
df_apellidos_conjuntos2 <- df_apellidos_conjuntos %>%
mutate(Letra= stri_sub(Apellido,1,1)) %>%
arrange(Letra)
#NOMBRES
df_nombreH<- df_nombre1 %>%
mutate(Sexo="Hombre") %>%
rename(Edad= `Edad Media (*)`)%>%
select(-c(Orden))
df_nombreM <- df_nombre %>%
mutate(Sexo="Mujer") %>%
rename(Edad= `Edad Media (*)`) %>%
select(-c(Orden))
df_NombresJuntos<- full_join(df_nombreH, df_nombreM, by= c("Nombre","Frecuencia","Edad","Sexo")) %>% arrange(desc(Frecuencia))
df_NombresJuntos2 <- df_NombresJuntos %>%
mutate(Letra= stri_sub(Nombre,1,1)) %>%
arrange(Letra)
De esta forma, haremos una tabla con buscador de NOMBRES y otra para APELLIDOS
Para los gráficos, haremos 3 gráficos de barras. El primero estará relacionado con los 10 apellidos más frecuentes, el segundo con los 10 nombres más frecuentes y el tercero será un gráfico de los 10 nombres menos comunes y los 10 que más.
Primero, necesitaremos transformar los datos
#APELLIDOS
df_apellidos <- df_apellidos1 %>% select(Apellido, Frec_1er_Apellido, Frec_2o_Apellido) %>% mutate(Frec_Total= Frec_1er_Apellido + Frec_2o_Apellido) %>% slice_max(Frec_Total, n=10) %>% mutate(Apellido = forcats::as_factor(Apellido)) %>% mutate(Apellido = forcats::fct_reorder(Apellido, Frec_Total))
p <- ggplot(df_apellidos, aes(Apellido, Frec_Total)) + geom_col(fill = "steelblue") + coord_flip()
#NOMBRES
df_nombres <- full_join(df_nombre, df_nombre1)
df_nombres3 <-df_nombres %>% select(Nombre, Frecuencia) %>% slice_max(Frecuencia, n=10) %>% mutate(Nombre = forcats::as_factor(Nombre)) %>% mutate(Nombre = forcats::fct_reorder(Nombre, Frecuencia))
s <- ggplot(df_nombres3, aes(Nombre, Frecuencia)) + geom_col(fill = "steelblue") + coord_flip()
#10 MÁS FRECUENTES Y 10 QUE MENOS
df_nombres_edadmedia <- df_nombres %>% select(Nombre, `Edad Media (*)`) %>% arrange(desc(`Edad Media (*)`)) %>%
slice(c(1,2,3,4,5,6,7,8,9,10,n()-9,n()-8,n()-7,n()-6,n()-5,n()-4,n()-3,n()-2,n()-1, n()))%>%
mutate(Nombre = forcats::as_factor(Nombre)) %>% mutate(Nombre = forcats::fct_reorder(Nombre, `Edad Media (*)`))
r <- ggplot(df_nombres_edadmedia, aes(Nombre, `Edad Media (*)`)) + geom_col(fill="steelblue") + coord_flip()
Mostramos los gráficos:
Cargaremos primero las geometrías de la carpeta Datos
load("./Datos/geometrias_clase_10.RData")
Y ahora haremos un mapa para la frecuencia por provincias del nombre de Daniel:
#Hacemos un mapa de coropletas del país para el total del nombre "Daniel"
dfDaniel <- full_join(df_Daniel, Provincias, by = c("Provincia" = "NombreProv"))
Y ahora otro mapa para la frecuencia por provincias del nombre de Laura:
#Hacemos otro mapa de coropletas para el total del nombre "Laura".
dfLaura<-full_join(df_Laura, Provincias, by = c("Provincia" = "NombreProv"))
Las conclusiones son …
Para la realización del trabajo he utilizado:
Para acabar este chunk para incluir tu session info:
sessioninfo::session_info() %>% details::details(summary = 'current session info')
current session info
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.0.2 (2020-06-22)
os macOS Catalina 10.15.7
system x86_64, darwin17.0
ui X11
language (EN)
collate es_ES.UTF-8
ctype es_ES.UTF-8
tz Europe/Madrid
date 2020-12-10
─ Packages ───────────────────────────────────────────────────────────────────
package * version date lib
assertthat 0.2.1 2019-03-21 [1]
backports 1.1.10 2020-09-15 [1]
base64enc 0.1-3 2015-07-28 [1]
blob 1.2.1 2020-01-20 [1]
broom 0.7.0 2020-07-09 [1]
cellranger 1.1.0 2016-07-27 [1]
class 7.3-17 2020-04-26 [1]
classInt 0.4-3 2020-04-07 [1]
cli 2.0.2 2020-02-28 [1]
colorspace 1.4-1 2019-03-18 [1]
crayon 1.3.4 2017-09-16 [1]
crosstalk 1.1.0.1 2020-03-13 [1]
data.table 1.13.0 2020-07-24 [1]
DBI 1.1.0 2019-12-15 [1]
dbplyr 1.4.4 2020-05-27 [1]
digest 0.6.25 2020-02-23 [1]
dplyr * 1.0.2 2020-08-18 [1]
e1071 1.7-3 2019-11-26 [1]
ellipsis 0.3.1 2020-05-15 [1]
evaluate 0.14 2019-05-28 [1]
fansi 0.4.1 2020-01-08 [1]
farver 2.0.3 2020-01-16 [1]
fastmap 1.0.1 2019-10-08 [1]
forcats * 0.5.0 2020-03-01 [1]
formatR 1.7 2019-06-11 [1]
fs 1.5.0 2020-07-31 [1]
generics 0.1.0 2020-10-31 [1]
ggplot2 * 3.3.2 2020-06-19 [1]
ggrepel * 0.8.2 2020-03-08 [1]
ggThemeAssist * 0.1.5.9001 2020-11-13 [1]
glue 1.4.2 2020-08-27 [1]
gtable 0.3.0 2019-03-25 [1]
haven 2.3.1 2020-06-01 [1]
here 0.1 2017-05-28 [1]
hms 0.5.3 2020-01-08 [1]
htmltools 0.5.0 2020-06-16 [1]
htmlwidgets 1.5.1 2019-10-08 [1]
httpuv 1.5.4 2020-06-06 [1]
httr 1.4.2 2020-07-20 [1]
jsonlite 1.7.1 2020-09-07 [1]
KernSmooth 2.23-17 2020-04-26 [1]
klippy * 0.0.0.9500 2020-11-17 [1]
knitr * 1.29 2020-06-23 [1]
labeling 0.3 2014-08-23 [1]
later 1.1.0.1 2020-06-05 [1]
lazyeval 0.2.2 2019-03-15 [1]
lifecycle 0.2.0 2020-03-06 [1]
lubridate 1.7.9 2020-06-08 [1]
magrittr 1.5 2014-11-22 [1]
mime 0.9 2020-02-04 [1]
miniUI 0.1.1.1 2018-05-18 [1]
modelr 0.1.8 2020-05-19 [1]
munsell 0.5.0 2018-06-12 [1]
patchwork * 1.1.0 2020-11-09 [1]
pillar 1.4.6 2020-07-10 [1]
pkgconfig 2.0.3 2019-09-22 [1]
plotly * 4.9.2.1 2020-04-04 [1]
promises 1.1.1 2020-06-09 [1]
purrr * 0.3.4 2020-04-17 [1]
R6 2.4.1 2019-11-12 [1]
Rcpp 1.0.5 2020-07-06 [1]
reactable * 0.2.3 2020-10-04 [1]
reactR 0.4.3 2020-07-12 [1]
readr * 1.3.1 2018-12-21 [1]
readxl * 1.3.1 2019-03-13 [1]
rematch 1.0.1 2016-04-21 [1]
reprex 0.3.0 2019-05-16 [1]
rlang 0.4.7 2020-07-09 [1]
rmarkdown 2.3 2020-06-18 [1]
rprojroot 1.3-2 2018-01-03 [1]
rstudioapi 0.11 2020-02-07 [1]
rvest 0.3.6 2020-07-25 [1]
scales 1.1.1 2020-05-11 [1]
sessioninfo 1.1.1 2018-11-05 [1]
sf * 0.9-6 2020-09-13 [1]
shiny 1.5.0 2020-06-23 [1]
stringi * 1.5.3 2020-09-09 [1]
stringr * 1.4.0 2019-02-10 [1]
tibble * 3.0.3 2020-07-10 [1]
tidyr * 1.1.2 2020-08-27 [1]
tidyselect 1.1.0 2020-05-11 [1]
tidyverse * 1.3.0 2019-11-21 [1]
units 0.6-7 2020-06-13 [1]
vctrs 0.3.4 2020-08-29 [1]
viridisLite 0.3.0 2018-02-01 [1]
withr 2.2.0 2020-04-20 [1]
xfun 0.17 2020-09-09 [1]
xml2 1.3.2 2020-04-23 [1]
xtable 1.8-4 2019-04-21 [1]
yaml 2.2.1 2020-02-01 [1]
source
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.1)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
Github (calligross/ggthemeassist@35b720f)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
Github (rlesur/klippy@378c247)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.1)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
CRAN (R 4.0.2)
[1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library